﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;

public static class AppSettings
{
    // 定义配置文件的路径
    private static readonly string ConfigDirectory = Path.Combine(Application.StartupPath, "config");
    private static readonly string IniFilePath = Path.Combine(ConfigDirectory, "settings.ini");
    private const string LanguageKey = "GenerateLanguage";

    /// <summary>
    /// 从 settings.ini 文件加载语言设置
    /// </summary>
    /// <returns>返回语言代码，如果找不到则返回默认值 "en-US"</returns>
    public static string LoadLanguage()
    {
        // 默认语言
        const string defaultLanguage = "en-US";

        if (!File.Exists(IniFilePath))
        {
            return defaultLanguage;
        }

        try
        {
            var lines = File.ReadAllLines(IniFilePath);
            foreach (var line in lines)
            {
                // 寻找包含语言键的那一行
                if (line.Trim().StartsWith(LanguageKey + "=", StringComparison.OrdinalIgnoreCase))
                {
                    // 分割键和值
                    var parts = line.Split(new[] { '=' }, 2);
                    if (parts.Length == 2 && !string.IsNullOrWhiteSpace(parts[1]))
                    {
                        return parts[1].Trim(); // 返回找到的语言代码
                    }
                }
            }
        }
        catch (Exception)
        {
            // 如果读取文件时发生任何错误，都返回默认值
            return defaultLanguage;
        }

        return defaultLanguage; // 如果文件中没有找到对应的键，也返回默认值
    }

    /// <summary>
    /// 将新的语言设置保存到 settings.ini 文件
    /// </summary>
    /// <param name="newLanguageCode">要保存的新语言代码</param>
    public static void SaveLanguage(string newLanguageCode)
    {
        try
        {
            // 确保 config 文件夹存在
            Directory.CreateDirectory(ConfigDirectory);

            List<string> lines = File.Exists(IniFilePath) ? File.ReadAllLines(IniFilePath).ToList() : new List<string>();

            bool keyExists = false;
            for (int i = 0; i < lines.Count; i++)
            {
                if (lines[i].Trim().StartsWith(LanguageKey + "=", StringComparison.OrdinalIgnoreCase))
                {
                    // 如果找到了，就更新这一行
                    lines[i] = $"{LanguageKey}={newLanguageCode}";
                    keyExists = true;
                    break;
                }
            }

            if (!keyExists)
            {
                // 如果没找到，就在文件末尾添加新的一行
                lines.Add($"{LanguageKey}={newLanguageCode}");
            }

            // 将所有行写回文件
            File.WriteAllLines(IniFilePath, lines);
        }
        catch (Exception ex)
        {
            // 如果保存失败，可以弹出一个提示，但这通常是可选的
            MessageBox.Show("无法保存设置: " + ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}